/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package assisisw.smartcal.persistencesubsystem;

import assisisw.smartcal.entitysubsystem.Calendar;
import assisisw.smartcal.entitysubsystem.User;
import java.io.Serializable;

/**
 *
 * @author Francesco
 */
public interface ICalendarDAO extends Serializable
{

    // Instance Methods
    
    /**
     * @param id
     * @return
     */
    public Calendar findById ( int id ) ;
    
    /**
     * @param user
     * @return
     * @throws IllegalArgumentException
     */
    public Iterable < Calendar > findByUser ( User user ) ;
    
    /**
     * @param calendar 
     * @throws IllegalArgumentException
     */
    public void insert ( Calendar calendar ) ;
    
    /**
     * @param calendar 
     * @throws IllegalArgumentException
     */
    public void update ( Calendar calendar ) ;
    
    /**
     * @param calendar 
     * @throws IllegalArgumentException
     */
    public void delete ( Calendar calendar ) ;
    
}
